package chips440.main;

/**
 * Encapsulates a few enumeration types that show up several times in the
 * design.
 *
 * @author Ian Voysey
 * @version 0.1
 */
public class Types{
    /**
     * This type conveys the notion of directions in the game, used for
     * movement tiles, and ice tiles.
     */
    public enum Direct {/** indicates one tile up; (x,y) to (x,y+1) */ UP,
	    /** indicates one tile down; (x,y) to (x,y-1) */ DOWN,
	    /** indicates one tile left; (x,y) to (x-1,y) */ LEFT,
	    /** indicates one tile right; (x,y) to (x+1,y) */ RIGHT,
	    };

    /**
     * The different types of items that can be picked up
     */
    public enum Item {/** fire boots, which allow the player to safely walk on
		       * fire*/ F_BOOT,
	    /** water boots, which allow the player to swim */ W_BOOT,
	    /** ice boots, which allow the player to skate */ I_BOOT,
	    /** movement boots, which allow the player to move MoveTiles
	     * freely */ M_BOOT,
	    /** a red key */ R_KEY,
	    /** a blue key */ B_KEY,
	    /** a yellow key */ Y_KEY,
	    /** a green key */ G_KEY,
	    /** sweet delicious chips */ CHIP
	    };

    /**
     * The various possible situations that can arise when a player steps on a
     * tile are encoded here, that the engine can make correct decisions while
     * processing moves.
     */
    public enum TileAct {/** the player can continue to move */ MOVE,
	    /** the player picked up an item */ ITEM,
	    /** the player continues in their current direction */ CONT,
	    /** the player continues in a different direction*/ GOTO,
	    /** the level ends */ END,
	    /** the player dies*/ KILL,
	    /** the player stops*/ STOP,
	    /** the player has opened the door*/ OPEN
	    };

    /**
     * This enum allows the engine to make known the state it believes the
     * game to be in.
     */
    public enum EngineState { /** The player is alive */ ALIVE,
	    /** The player has died */ DEAD,
	    /** The player has won */ WIN
	    };
}